package com.lipl.base.javase.designpattern.template.course;

/**
 * @author lipl
 */
public abstract class NetworkCourse {

    protected  final void createCourse(){
        //1、发布预习资料
        this.postPreResource();

        //2、制作PPT课件
        this.createPPT();

        //3、在线直播
        this.liveVideo();

        //4、提交课件、课堂笔记
        this.postNote();

        //5、提交源代码
        this.postSource();

        //6、步骤作业，有些课没作业
        //如果有作业，检查作业，没作业，完成了
        if(needHomeWork()){
            checkHomework();
        }

    }


    final void postPreResource(){
        System.out.println("分发预习资料");
    };

    final void createPPT(){
        System.out.println("创建备课PPT");
    };

    final void liveVideo(){
        System.out.println("在线直播");
    };

    final void postNote(){
        System.out.println("提交课堂笔记");
    };

    final void postSource(){
        System.out.println("提交源码");
    };

    //钩子方法
    protected  boolean needHomeWork(){
        return false;
    };

    abstract void checkHomework();



}
